package org.springblade.modules.admin.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.core.mp.support.Query;
import org.springblade.modules.admin.dto.TlwAlarmNoticeDTO;
import org.springblade.modules.admin.dto.TlwBuildingElevatorQuery;
import org.springblade.modules.admin.dto.tlw.TaskStatusDTO;
import org.springblade.modules.admin.dto.tlw.TlwPlanQueryDTO;
import org.springblade.modules.admin.vo.*;
import org.springblade.modules.admin.vo.tlw.TlwByPlanVO;
import org.springblade.modules.admin.vo.tlw.TlwElevatorStatistics;

import java.util.List;
import java.util.Map;

/**
 * @author Jackey
 * @date 2022年10月13日 14:50
 */
public interface TlwService {
	/**
	 * 梯联网统计
	 * @return
	 */
	TlwStatisticsVO statistics();

	List<TlwRankingListVO> rankingList(List<String> deviceList);

	List<TlwEstatePeopleVO> estatePeopleList();

	Boolean alarmNotice(TlwAlarmNoticeDTO noticeDTO);

	List<TlwEstatePeopleVO> maintainPeopleList(String deviceId);

	List<BuildingDeviceEleVO> buildingDeviceEleList(Long buildingId);

	List<Map<String,Object>> batchMaintainPeopleList(String deviceIds);

    Map<String,Object> buildingElevatorPage(TlwBuildingElevatorQuery tbeQuery, Query query);

	Map<String,Object> deviceBuildingElevatorPage(TlwBuildingElevatorQuery tbeQuery, Query query);

	List<Map<String,Object>> batchElevatorMaintainPeopleList(String elevatorIds);

	IPage<TlwByPlanVO> tlwByPlanPage(TlwPlanQueryDTO queryDTO, IPage<TlwByPlanVO> page);

    List<TlwByPlanVO> tlwByPlanList(TlwPlanQueryDTO queryDTO);

    TlwByPlanVO tlwByPlanDetail(Long planId);

	List<PlanTemplateVO> getPlanWorkItem(Long planId, Long templateId,Integer isStore);

	/**
	 * 电梯工单任务状态
	 * @param taskStatusDTO
	 * @return
	 */
	List<ElevatorTaskStatusVO> getElevatorTaskStatusList(TaskStatusDTO taskStatusDTO);

	/**
	 * 单个电梯统计数据
	 * @param deviceId
	 * @return
	 */
	TlwElevatorStatistics getElevatorStatistics(String deviceId, Long startAt, Long endAt);
}
